<%--
  Created by IntelliJ IDEA.
  User: 王文尧
  Date: 2024/7/10
  Time: 11:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        // 先在我们四大作用域中存数据
        pageContext.setAttribute("msg", "pageContextMSG"); // 本页（超出本页范围，就失效）
        request.setAttribute("msg", "requestMSG"); // 请求（一次请求一次响应后，就失效）
        session.setAttribute("msg", "sessionMSG"); // 会话（会话结束（1 关闭浏览器 2 关闭服务器 3 超时30分钟）后，就失效）
        application.setAttribute("msg", "applicationMSG"); // 上下文（服务器关闭后，就失效）
        // 是将数据 保存到 这四个对象中属性 不是 纯纯 创建 变量
        String msg = "strMSG";
        // 在小脚本中的变量 范围是什么？肯定是在本页中
        // 转换成  java文件（xxx_JSP.java）后  局部变量

        // 通过两种方式获得这些数据
        // 使用java的方式（小脚本）
        // 使用EL表达式方式
    %>
    pageContext:<%=pageContext.getAttribute("msg") %><br/>
    request:<%=request.getAttribute("msg") %><br/>
    session:<%=session.getAttribute("msg") %><br/>
    application:<%=application.getAttribute("msg") %><br/>

    <hr/>
    <%-- EL表达式 是  $ 后面 是  花括号      区分： jquery 选择器 $()  --%>
    <%-- el脱离了 java代码  它并不是 放在 小脚本  和静态标签一样位置  --%>
    pageContext:${pageScope.msg}<br/> <%-- pageContext:<%=pageContext.getAttribute("msg") %> --%>
    request:${requestScope.msg}<br/>
    session:${sessionScope.msg}<br/>
    application:${applicationScope.msg}<br/>
    <hr/>
    <%-- 如果，我们知道 本页中 获得 的 msg 属性来自于 唯一的一个作用域对象 ，比如 session对象中，有一个 test属性 --%>
    <%
        session.setAttribute("test", "sessionTest");
    %>
    <%-- 简写，省略作用域范围（sessionScope） --%>
    sessionTest:${test}<br/>
    sessionTest:${sessionScope.test}
    <%-- 如果属性不唯一（多个作用域对象都拥有，找谁？） -> 小范围到大范围，先找到的就是谁 --%>
    <hr/>
    msg:${msg}
    <%-- 属性为空时，普通表达式`<%=xxx%>` 显示结果为 null（我们之前还因此要判断，换为空字符串呢） EL表达式 显示 空（不显示） --%>
</body>
</html>
